@邪恶贝壳
3年前 提问
1个回答
怎么防御 JSON 劫持攻击
安全侠
3年前
防御 JSON 劫持攻击我们可以在JavaScript响应的开头部分插入无效或存在问题的JavaScript;即在针对包含敏感数据的JavaScript对象的请求中包括无法预测的参数;强制使用POST方法来检索JavaScript对象。
JSON 劫持
json劫持攻击又为”JSON Hijacking”,攻击过程有点类似于csrf,只不过csrf只管发送http请求,但是json-hijack的目的是获取敏感数据。
一些web应用会把一些敏感数据以json的形式返回到前端,如果仅仅通过cookie来判断请求是否合法,那么就可以利用类似csrf的手段,向目标服务器发送请求,以获得敏感数据。
比如下面的链接在已登录的情况下会返回json格式的用户信息:
http://www.test.com/userinfo
攻击者可以在自己的虚假页面中,加入如下标签:
<script src="http://www.test.com/userinfo"></script>
如果当前浏览器已经登录了http://www.test.com
,并且cookie未过期,然后访问了攻击者的虚假页面,那么该页面就可以拿到json形式的用户敏感信息,因为script标签会自动解析json数据,生成对应的js对象。然后再通过
Object.prototype.__defineSetter__
这个函数来触发自己的恶意代码。
但是这个函数在当前的新版本chrome和firefox中都已经失效了。
防御 JSON 劫持攻击
1.在JavaScript响应的开头部分插入无效或存在问题的JavaScript;
2.即在针对包含敏感数据的JavaScript对象的请求中包括无法预测的参数;
3.强制使用POST方法来检索JavaScript对象。